<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>ArNetworking: serverDemo.cpp</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">ArNetworking
   &#160;<span id="projectnumber">dev20180125</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('serverDemo_8cpp-example.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">serverDemo.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<p>Example ArNetworking server providing teleoperation, sonar data, control the camera, etc.This is a basic ArNetworking server. It connects to a robot or simulator, including, if available, IRs, gyro, and bumpers. Give the option "-connectLaser" on the command line to enable the laser rangefinder, if available.</p>
<p>Run "./serverDemo -help" for a full list of command line options.</p>
<p>Once running, connect to this server with a a client such as MobileEyes.</p>
<p>This server provides the following services:</p><ul>
<li>User login (optional)</li>
<li>Basic robot telemetry information</li>
<li>Range sensor data values (not used by MobileEyes)</li>
<li>Graphics representing range sensor reading positions</li>
<li>Teleoperation modes (including safe/unsafe drive modes)</li>
<li>Wander mode</li>
<li>Various advanced "custom" commands to control logging, debugging, etc.</li>
</ul>
<p>Note that this program requires a terminal to run &ndash; i.e. you can't run it in the background in Linux. To modify it to allow that, remove the key handler code in <a class="el" href="serverDemo_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main()</a>.</p>
<div class="fragment"><div class="line"></div><div class="line"><span class="preprocessor">#include &quot;Aria.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="ArNetworking_8h.html">ArNetworking.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;ArSonarMTX.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="ArServerModeJogPosition_8h.html">ArServerModeJogPosition.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="ArServerAdvertiser_8h.html">ArServerAdvertiser.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="ArServerModeTestLoop_8h.html">ArServerModeTestLoop.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;ArGPSConnector.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;ArGPS.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;ArSeekurIMU.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;ArSimUtil.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="ArServerInfoTrailDrawing_8h.html">ArServerInfoTrailDrawing.h</a>&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">int</span> <a name="a0"></a><a class="code" href="serverDemo_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)</div><div class="line">{</div><div class="line">  <a name="a1"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ad99c16b5d947229d9f8e1c5b2d4cdd73">Aria::init</a>();</div><div class="line">  <span class="comment">//ArLog::init(ArLog::StdOut, ArLog::Verbose);</span></div><div class="line">  <a name="_a2"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArArgumentParser.html">ArArgumentParser</a> parser(&amp;argc, argv);</div><div class="line">  parser.<a name="a3"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArArgumentParser.html#a501694b62a7f8b0c3cadd84aeafe1b35">loadDefaultArguments</a>();</div><div class="line">  <a name="_a4"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html">ArRobot</a> robot;</div><div class="line">  <a name="_a5"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobotConnector.html">ArRobotConnector</a> robotConnector(&amp;parser, &amp;robot);</div><div class="line">  <a name="_a6"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArAnalogGyro.html">ArAnalogGyro</a> gyro(&amp;robot);</div><div class="line">  <a name="_a7"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPSConnector.html">ArGPSConnector</a> gpsConnector(&amp;parser);</div><div class="line">  <a name="_a8"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArSeekurIMU.html">ArSeekurIMU</a> imu(&amp;robot);</div><div class="line"></div><div class="line">  <span class="keywordflow">if</span> (!robotConnector.<a name="a9"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobotConnector.html#ab192ac393d9cc1e5b61b1a82b08d085d">connectRobot</a>())</div><div class="line">  {</div><div class="line">    printf(<span class="stringliteral">&quot;Could not connect to robot... exiting\n&quot;</span>);</div><div class="line">    <a name="a10"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#a6abc3d39b3e9548063bb8e78375acc17">Aria::exit</a>(1);</div><div class="line">  }</div><div class="line"></div><div class="line">  <a name="_a11"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html">ArDataLogger</a> dataLogger(&amp;robot, <span class="stringliteral">&quot;dataLog.tsv&quot;</span>);</div><div class="line">  </div><div class="line">  <a name="_a12"></a><a class="code" href="classArServerBase.html">ArServerBase</a> server;</div><div class="line"></div><div class="line">  <a name="_a13"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLaserConnector.html">ArLaserConnector</a> laserConnector(&amp;parser, &amp;robot, &amp;robotConnector);</div><div class="line">  <a name="_a14"></a><a class="code" href="classArServerSimpleOpener.html">ArServerSimpleOpener</a> simpleOpener(&amp;parser);</div><div class="line"></div><div class="line"></div><div class="line">  <span class="keywordflow">if</span> (!<a name="a15"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#a1b090c01d88bb420b8cf8e0384d25ee1">Aria::parseArgs</a>() || !parser.<a name="a16"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArArgumentParser.html#ac3889cbdfa862031c51bf80e06954914">checkHelpAndWarnUnparsed</a>())</div><div class="line">  {    </div><div class="line">    <a name="a17"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#a10d71f3d4d0cf7f38c58a1f749f64a42">Aria::logOptions</a>();</div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#a6abc3d39b3e9548063bb8e78375acc17">Aria::exit</a>(1);</div><div class="line">  }</div><div class="line"></div><div class="line">  <span class="comment">// Set up where we&#39;ll look for files such as user/password </span></div><div class="line">  <span class="keywordtype">char</span> fileDir[1024];</div><div class="line">  <a name="a18"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArUtil.html#a196eae227f3e6fc7387bb623b4ddea03">ArUtil::addDirectories</a>(fileDir, <span class="keyword">sizeof</span>(fileDir), <a name="a19"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#a9cbf9a172cb85275b05d391685f223e0">Aria::getDirectory</a>(), </div><div class="line">                         <span class="stringliteral">&quot;ArNetworking/examples&quot;</span>);</div><div class="line"></div><div class="line">  <span class="keywordflow">if</span> (!simpleOpener.<a name="a20"></a><a class="code" href="classArServerSimpleOpener.html#a6429c1069dee5edc19fb7dc94078bed0">open</a>(&amp;server, fileDir, 240))</div><div class="line">  {</div><div class="line">    <span class="keywordflow">if</span> (simpleOpener.<a name="a21"></a><a class="code" href="classArServerSimpleOpener.html#a7416e273f937d9301eb94ed02e04825d">wasUserFileBad</a>())</div><div class="line">      printf(<span class="stringliteral">&quot;Bad user/password/permissions file\n&quot;</span>);</div><div class="line">    <span class="keywordflow">else</span></div><div class="line">      printf(<span class="stringliteral">&quot;Could not open server port\n&quot;</span>);</div><div class="line">    exit(1);</div><div class="line">  }</div><div class="line"></div><div class="line"> </div><div class="line"> </div><div class="line">  <a name="_a22"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArSonarDevice.html">ArSonarDevice</a> sonarDev;</div><div class="line">  robot.<a name="a23"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html#a97d57b28549fdef851c00749a97cc776">addRangeDevice</a>(&amp;sonarDev);</div><div class="line"></div><div class="line">  <a name="_a24"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArIRs.html">ArIRs</a> irs;</div><div class="line">  robot.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html#a97d57b28549fdef851c00749a97cc776">addRangeDevice</a>(&amp;irs);</div><div class="line"></div><div class="line">  <a name="_a25"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArBumpers.html">ArBumpers</a> bumpers;</div><div class="line">  robot.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html#a97d57b28549fdef851c00749a97cc776">addRangeDevice</a>(&amp;bumpers);</div><div class="line"></div><div class="line">  <span class="comment">// attach services to the server</span></div><div class="line">  <a name="_a26"></a><a class="code" href="classArServerInfoRobot.html">ArServerInfoRobot</a> serverInfoRobot(&amp;server, &amp;robot);</div><div class="line">  <a name="_a27"></a><a class="code" href="classArServerInfoSensor.html">ArServerInfoSensor</a> serverInfoSensor(&amp;server, &amp;robot);</div><div class="line">  <a name="_a28"></a><a class="code" href="classArServerInfoDrawings.html">ArServerInfoDrawings</a> drawings(&amp;server);</div><div class="line"></div><div class="line">  <span class="comment">// modes for controlling robot movement</span></div><div class="line">  <a name="_a29"></a><a class="code" href="classArServerModeStop.html">ArServerModeStop</a> modeStop(&amp;server, &amp;robot);</div><div class="line">  <a name="_a30"></a><a class="code" href="classArServerModeRatioDrive.html">ArServerModeRatioDrive</a> modeRatioDrive(&amp;server, &amp;robot);  </div><div class="line">  <a name="_a31"></a><a class="code" href="classArServerModeWander.html">ArServerModeWander</a> modeWander(&amp;server, &amp;robot);</div><div class="line">  <a name="_a32"></a><a class="code" href="classArServerModeJogPosition.html">ArServerModeJogPosition</a> modeJog(&amp;server, &amp;robot);</div><div class="line">  modeJog.<a name="a33"></a><a class="code" href="classArServerModeJogPosition.html#ae804b49ae43c71bca7bd425ed1dd75c0">addToConfig</a>(<a name="a34"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>());</div><div class="line">  modeStop.<a name="a35"></a><a class="code" href="classArServerMode.html#ac071f8179603fecc38d69f8e89e88f34">addAsDefaultMode</a>();</div><div class="line">  modeStop.<a name="a36"></a><a class="code" href="classArServerModeStop.html#a701b1ae94cfda807e9f3d6c51a9fc53f">activate</a>();</div><div class="line"></div><div class="line">  <span class="comment">// set up the simple commands</span></div><div class="line">  <a name="_a37"></a><a class="code" href="classArServerHandlerCommands.html">ArServerHandlerCommands</a> commands(&amp;server);</div><div class="line">  <a name="_a38"></a><a class="code" href="classArServerSimpleComUC.html">ArServerSimpleComUC</a> uCCommands(&amp;commands, &amp;robot);  <span class="comment">// send commands directly to microcontroller</span></div><div class="line">  <a name="_a39"></a><a class="code" href="classArServerSimpleComMovementLogging.html">ArServerSimpleComMovementLogging</a> loggingCommands(&amp;commands, &amp;robot); <span class="comment">// control debug logging</span></div><div class="line">  <a name="_a40"></a><a class="code" href="classArServerSimpleComGyro.html">ArServerSimpleComGyro</a> gyroCommands(&amp;commands, &amp;robot, &amp;gyro); <span class="comment">// configure gyro</span></div><div class="line">  <a name="_a41"></a><a class="code" href="classArServerSimpleComLogRobotConfig.html">ArServerSimpleComLogRobotConfig</a> configCommands(&amp;commands, &amp;robot); <span class="comment">// control more debug logging</span></div><div class="line">  <a name="_a42"></a><a class="code" href="classArServerSimpleServerCommands.html">ArServerSimpleServerCommands</a> serverCommands(&amp;commands, &amp;server); <span class="comment">// control ArNetworking debug logging</span></div><div class="line">  <a name="_a43"></a><a class="code" href="classArServerSimpleLogRobotDebugPackets.html">ArServerSimpleLogRobotDebugPackets</a> logRobotDebugPackets(&amp;commands, &amp;robot, <span class="stringliteral">&quot;.&quot;</span>);  <span class="comment">// debugging tool</span></div><div class="line"></div><div class="line">  modeJog.<a name="a44"></a><a class="code" href="classArServerModeJogPosition.html#a8447c723f144164f3f0290643ab0e145">addCommands</a>(&amp;commands);</div><div class="line"></div><div class="line">  <span class="comment">// ArServerModeDrive is an older drive mode. ArServerModeRatioDrive is newer and generally performs better,</span></div><div class="line">  <span class="comment">// but you can use this for old clients if neccesary.</span></div><div class="line">  <span class="comment">//ArServerModeDrive modeDrive(&amp;server, &amp;robot);</span></div><div class="line">  <span class="comment">//modeDrive.addControlCommands(&amp;commands); // configure the drive modes (e.g. enable/disable safe drive)</span></div><div class="line"></div><div class="line">  <a name="_a45"></a><a class="code" href="classArServerHandlerConfig.html">ArServerHandlerConfig</a> serverHandlerConfig(&amp;server, <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>()); <span class="comment">// make a config handler</span></div><div class="line">  <a name="a46"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#a830b6edab2079ae1ffeb7e164e30636b">ArLog::addToConfig</a>(<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>()); <span class="comment">// let people configure logging</span></div><div class="line"></div><div class="line">  modeRatioDrive.<a name="a47"></a><a class="code" href="classArServerModeRatioDrive.html#a5f9789a3e51ca3f52d3efbd7be5d4c66">addToConfig</a>(<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>(), <span class="stringliteral">&quot;Teleop settings&quot;</span>); <span class="comment">// able to configure teleop settings</span></div><div class="line">  modeRatioDrive.<a name="a48"></a><a class="code" href="classArServerModeRatioDrive.html#a4f2e0b9b1cbdca73db31d95437e095b2">addControlCommands</a>(&amp;commands);</div><div class="line"></div><div class="line">  commands.<a name="a49"></a><a class="code" href="classArServerHandlerCommands.html#a860062d3fbb628d4bd8fe47bf690fbd1">addCommand</a>(<span class="stringliteral">&quot;DataLogger:StopLogging&quot;</span>, <span class="stringliteral">&quot;Stop logging to data log file.  See configuration options.&quot;</span>, dataLogger.getStopLogFunctor());</div><div class="line">  commands.<a class="code" href="classArServerHandlerCommands.html#a860062d3fbb628d4bd8fe47bf690fbd1">addCommand</a>(<span class="stringliteral">&quot;DataLogger:StartLogging&quot;</span>, <span class="stringliteral">&quot;Start or resume logging to data log file. See configuration.&quot;</span>, dataLogger.getStartLogFunctor());</div><div class="line">  commands.<a name="a50"></a><a class="code" href="classArServerHandlerCommands.html#a68fd880bff6fcd33b39e33f5e47cc935">addStringCommand</a>(<span class="stringliteral">&quot;DataLogger:InsertComment&quot;</span>, <span class="stringliteral">&quot;Write a message to the data log as a comment. Data Logging must be enabled in config.&quot;</span>, dataLogger.getWriteCommentFunctor());</div><div class="line">  commands.<a class="code" href="classArServerHandlerCommands.html#a860062d3fbb628d4bd8fe47bf690fbd1">addCommand</a>(<span class="stringliteral">&quot;DataLogger:ClearLog&quot;</span>, <span class="stringliteral">&quot;Reset log file, deleting all existing logged data&quot;</span>, dataLogger.getClearLogFunctor());</div><div class="line">  commands.<a class="code" href="classArServerHandlerCommands.html#a860062d3fbb628d4bd8fe47bf690fbd1">addCommand</a>(<span class="stringliteral">&quot;DataLogger:SaveCopy&quot;</span>, <span class="stringliteral">&quot;Save a copy of the log file with timestamp.&quot;</span>, dataLogger.getSaveCopyFunctor()); </div><div class="line">  commands.<a class="code" href="classArServerHandlerCommands.html#a68fd880bff6fcd33b39e33f5e47cc935">addStringCommand</a>(<span class="stringliteral">&quot;DataLogger:SaveCopyAs&quot;</span>, <span class="stringliteral">&quot;Save a copy of the log file with given name.&quot;</span>, dataLogger.getSaveCopyWithArgsFunctor()); </div><div class="line"></div><div class="line">  <span class="comment">// You can use this class to send a set of arbitrary strings </span></div><div class="line">  <span class="comment">// for MobileEyes to display, this is just a small example</span></div><div class="line">  <a name="_a51"></a><a class="code" href="classArServerInfoStrings.html">ArServerInfoStrings</a> stringInfo(&amp;server);</div><div class="line">  <a name="a52"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a name="a53"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a1e1784e772af0d6318ade1fe309f11db">addAddStringCallback</a>(stringInfo.<a name="a54"></a><a class="code" href="classArServerInfoStrings.html#a2c5ebea58bca4a8ad16ce5368e6f668c">getAddStringFunctor</a>());</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a name="a55"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a162b4a2e028e476787e5b2d1be532525">addStringInt</a>(</div><div class="line">          <span class="stringliteral">&quot;Motor Packet Count&quot;</span>, 10, </div><div class="line">          <span class="keyword">new</span> <a name="_a56"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;int, ArRobot&gt;</a>(&amp;robot, </div><div class="line">                                               &amp;<a name="a57"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html#a9eb53fc27147cd3467fa3254cbb829f0">ArRobot::getMotorPacCount</a>));</div><div class="line">  <span class="comment">/*</span></div><div class="line"><span class="comment">  Aria::getInfoGroup()-&gt;addStringInt(</span></div><div class="line"><span class="comment">          &quot;Laser Packet Count&quot;, 10, </span></div><div class="line"><span class="comment">          new ArRetFunctorC&lt;int, ArSick&gt;(&amp;sick, </span></div><div class="line"><span class="comment">                                         &amp;ArSick::getSickPacCount));</span></div><div class="line"><span class="comment">  */</span></div><div class="line"></div><div class="line">  <a name="_a58"></a><a class="code" href="classArServerInfoTrailDrawing.html">ArServerInfoTrailDrawing</a> trail(<span class="stringliteral">&quot;RobotPose&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;ArPose, ArRobot&gt;</a>(&amp;robot, &amp;<a name="a59"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/group__easy.html#ga25c215578baa598a8916947bdf6e1285">ArRobot::getPose</a>), 200,</div><div class="line">      <a name="_a60"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDrawingData.html">ArDrawingData</a>(<span class="stringliteral">&quot;polyDots&quot;</span>, <a name="_a61"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArColor.html">ArColor</a>(100,255,100), 80, 64), </div><div class="line">      drawings, 5, 50);</div><div class="line">  robot.<a name="a62"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html#ab3ed1a09a96c009802ed64bbc6c75325">addSensorInterpTask</a>(<span class="stringliteral">&quot;trail&quot;</span>, 10, trail.<a name="a63"></a><a class="code" href="classArServerInfoTrailDrawing.html#acebab0ce834c842ee3966e4e666dba99">getPullFunc</a>());</div><div class="line"></div><div class="line">  <a name="_a64"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html">ArGPS</a> *gps = gpsConnector.<a name="a65"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPSConnector.html#a4a58ea7f81bc75b8ddeea820ac541c48">createGPS</a>(&amp;robot);</div><div class="line">  <a name="_a66"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPSCoordConverter.html">ArGPSCoordConverter</a> gpsconverter(gps);</div><div class="line">  <span class="keywordflow">if</span>(gps &amp;&amp; gps-&gt;<a name="a67"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html#a5edda03cc9e4c8db380e18f8d5465b7e">connect</a>())</div><div class="line">  {</div><div class="line">    <a name="a68"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#a43a8b3789126c818f390f24bdbceccce">ArLog::log</a>(<a name="a69"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3a7040faf60eeb155eaa85d439b1066ca1">ArLog::Normal</a>, <span class="stringliteral">&quot;serverDemo: Connected to GPS&quot;</span>);</div><div class="line">    dataLogger.<a name="a70"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;Latitude&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArGPS&gt;</a>(gps, &amp;<a name="a71"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html#a087bc9dd3bd7d234269a0de4b831f5a5">ArGPS::getLatitude</a>), <span class="stringliteral">&quot;%0.4f&quot;</span>, 12);</div><div class="line">    dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;Longitude&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArGPS&gt;</a>(gps, &amp;<a name="a72"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html#ab9733a782e5decb7f7726b89584c9f94">ArGPS::getLongitude</a>), <span class="stringliteral">&quot;%0.4f&quot;</span>, 12);</div><div class="line">    dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keyword">const</span> <span class="keywordtype">char</span>*&gt;(<span class="stringliteral">&quot;GPS Fix&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;const char*, ArGPS&gt;</a>(gps, &amp;<a name="a73"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html#a6d72883bfa14c7a5b7f0cedb6203f951">ArGPS::getFixTypeName</a>), <span class="stringliteral">&quot;%s&quot;</span>, 12);</div><div class="line">    dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;GPS HDOP&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArGPS&gt;</a>(gps, &amp;<a name="a74"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html#a725726751804ff7bb148b9cbd1fe83d7">ArGPS::getHDOP</a>), <span class="stringliteral">&quot;%0.4f&quot;</span>, 12);</div><div class="line">    dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<a name="_a75"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAr3DPoint.html">Ar3DPoint</a>&gt;(<span class="stringliteral">&quot;Pos. Converted From GPS&quot;</span>, gpsconverter.getCurrentFunc(), <span class="stringliteral">&quot;(%0.4f,%0.4f,%0.4f)&quot;</span>, 32);</div><div class="line">    dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<a name="_a76"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArTime.html">ArTime</a>&gt;(<span class="stringliteral">&quot;GPS Pos Timestamp&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;ArTime, ArGPS&gt;</a>(gps, &amp;<a name="a77"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html#ad33f8559bd069c837cc02a3414f6a1b1">ArGPS::getGPSPositionTimestamp</a>), <span class="stringliteral">&quot;%lu.%lu&quot;</span>, 16);</div><div class="line"></div><div class="line">    <a class="code" href="classArServerInfoTrailDrawing.html">ArServerInfoTrailDrawing</a> *gpsTrail = <span class="keyword">new</span> <a class="code" href="classArServerInfoTrailDrawing.html">ArServerInfoTrailDrawing</a>(<span class="stringliteral">&quot;gpspoints&quot;</span>, gpsconverter.getCurrent2DPoseFunc(), 300,</div><div class="line">      <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDrawingData.html">ArDrawingData</a>(<span class="stringliteral">&quot;polyDots&quot;</span>, <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArColor.html">ArColor</a>(100,100,255), 100, 63), </div><div class="line">      drawings, 5, 50);</div><div class="line">    robot.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html#ab3ed1a09a96c009802ed64bbc6c75325">addSensorInterpTask</a>(<span class="stringliteral">&quot;gpspoints&quot;</span>, 20, gpsTrail-&gt;<a class="code" href="classArServerInfoTrailDrawing.html#acebab0ce834c842ee3966e4e666dba99">getPullFunc</a>());</div><div class="line"></div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a name="a78"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;GPS Latitude&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArGPS&gt;</a>(gps, &amp;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html#a087bc9dd3bd7d234269a0de4b831f5a5">ArGPS::getLatitude</a>));</div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;GPS Longitude&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArGPS&gt;</a>(gps, &amp;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html#ab9733a782e5decb7f7726b89584c9f94">ArGPS::getLongitude</a>));</div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a name="a79"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a98daaf0a7d7501eac9f89f53de029f43">addStringString</a>(<span class="stringliteral">&quot;GPS Fix&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;const char*, ArGPS&gt;</a>(gps, &amp;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html#a6d72883bfa14c7a5b7f0cedb6203f951">ArGPS::getFixTypeName</a>));</div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;GPS HDOP&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArGPS&gt;</a>(gps, &amp;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGPS.html#a725726751804ff7bb148b9cbd1fe83d7">ArGPS::getHDOP</a>));</div><div class="line">  }</div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line">  <span class="keywordflow">if</span>(robotConnector.<a name="a80"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobotConnector.html#ac42b231ec0f05f564db4a2dfec8bd472">getRemoteIsSim</a>())</div><div class="line">  {</div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#a43a8b3789126c818f390f24bdbceccce">ArLog::log</a>(<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3a7040faf60eeb155eaa85d439b1066ca1">ArLog::Normal</a>, <span class="stringliteral">&quot;Connected to simulator, simulator info will be available for display and logging.&quot;</span>);</div><div class="line">    ArSimUtil *sim = <span class="keyword">new</span> ArSimUtil(&amp;robot);</div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;Sim True X&quot;</span>, 8, </div><div class="line">      <span class="keyword">new</span> <a name="_a81"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRetFunctorC.html">ArRetFunctorC&lt;double, ArSimUtil&gt;</a>(sim, &amp;ArSimUtil::getSimTrueX));</div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;Sim True Y&quot;</span>, 8, </div><div class="line">      <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRetFunctorC.html">ArRetFunctorC&lt;double, ArSimUtil&gt;</a>(sim, &amp;ArSimUtil::getSimTrueY)); </div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;Sim True Th&quot;</span>, 6, </div><div class="line">      <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRetFunctorC.html">ArRetFunctorC&lt;double, ArSimUtil&gt;</a>(sim, &amp;ArSimUtil::getSimTrueTh));</div><div class="line"></div><div class="line">    <a class="code" href="classArServerInfoTrailDrawing.html">ArServerInfoTrailDrawing</a> *trail  = <span class="keyword">new</span> <a class="code" href="classArServerInfoTrailDrawing.html">ArServerInfoTrailDrawing</a>(</div><div class="line">      <span class="stringliteral">&quot;SimTruePose&quot;</span>, sim-&gt;getSimTruePoseFunc(), 100,</div><div class="line">      <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDrawingData.html">ArDrawingData</a>(<span class="stringliteral">&quot;polyDots&quot;</span>, <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArColor.html">ArColor</a>(255, 178, 63), 180, 60), <span class="comment">// type, color, size, layer -- orange dots bigger and lower than MOGS trails</span></div><div class="line">      drawings,</div><div class="line">      5 <span class="comment">// poll position every 5 robot cycles (500ms)</span></div><div class="line">    );</div><div class="line">    robot.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html#ab3ed1a09a96c009802ed64bbc6c75325">addSensorInterpTask</a>(<span class="stringliteral">&quot;SimTruePoseDrawing&quot;</span>, 20, trail-&gt;<a class="code" href="classArServerInfoTrailDrawing.html#acebab0ce834c842ee3966e4e666dba99">getPullFunc</a>());</div><div class="line">  }</div><div class="line"></div><div class="line"></div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a name="a82"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a0295a34fe7e6cb92dda8c89c4c5a401e">addString</a>(<span class="stringliteral">&quot;Data Log Status&quot;</span>, 24, <span class="keyword">new</span> <a name="_a83"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArFunctor2C.html">ArFunctor2C&lt;ArDataLogger, char*, ArTypes::UByte2&gt;</a>(&amp;dataLogger, &amp;ArDataLogger::getStatus));</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a name="a84"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a30fda7f23d53abd265a6e6801b06d4c7">addStringUnsignedLong</a>(<span class="stringliteral">&quot;Data Log Disk Free Space&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRetFunctorC.html">ArRetFunctorC&lt;unsigned long, ArDataLogger&gt;</a>(&amp;dataLogger, &amp;ArDataLogger::getAvailableDiskSpaceMB), <span class="stringliteral">&quot;%lu MB&quot;</span>);</div><div class="line"></div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;IMU Yaw Speed&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getYawSpeed));</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;IMU Yaw Pos&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getYawPos));</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;IMU Roll Speed&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getRollSpeed));</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;IMU Roll Pos&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getRollPos));</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;IMU Pitch Speed&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getPitchSpeed));</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;IMU Pitch Pos&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getPitchPos));</div><div class="line"></div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;IMU Accel X&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getXAccel));</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;IMU Accel Y&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getYAccel));</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a9361630fdbaeca36c447d1d33614320b">addStringDouble</a>(<span class="stringliteral">&quot;IMU Accel Z&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getZAccel));</div><div class="line"></div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;addStringFloat(<span class="stringliteral">&quot;IMU Avg Temp&quot;</span>, 10, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;float, ArSeekurIMU&gt;</a>(&amp;imu, &amp;<a name="a85"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArSeekurIMU.html#a59d4cb2d757dc9fb90ff0ac0cbb03494">ArSeekurIMU::getTemperature</a>));</div><div class="line"></div><div class="line">  dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;IMU Yaw Speed (deg/s)&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getYawSpeed), <span class="stringliteral">&quot;%.2f&quot;</span>);</div><div class="line">  dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;IMU Yaw Pos (deg)&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getYawPos), <span class="stringliteral">&quot;%.2f&quot;</span>);</div><div class="line">  dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;IMU Roll Speed (deg/s)&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getRollSpeed), <span class="stringliteral">&quot;%.2f&quot;</span>);</div><div class="line">  dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;IMU Roll Pos (deg)&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getRollPos), <span class="stringliteral">&quot;%.2f&quot;</span>);</div><div class="line">  dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;IMU Pitch Speed (deg/s)&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getPitchSpeed), <span class="stringliteral">&quot;%.2f&quot;</span>);</div><div class="line">  dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;IMU Pitch Pos (deg)&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getPitchPos), <span class="stringliteral">&quot;%.2f&quot;</span>);</div><div class="line">  dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;IMU Accel X&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getXAccel), <span class="stringliteral">&quot;%.2f&quot;</span>);</div><div class="line">  dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;IMU Accel Y&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getYAccel), <span class="stringliteral">&quot;%.2f&quot;</span>);</div><div class="line">  dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">double</span>&gt;(<span class="stringliteral">&quot;IMU Accel Z&quot;</span>, <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;double, ArSeekurIMU&gt;</a>(&amp;imu, &amp;ArSeekurIMU::getZAccel), <span class="stringliteral">&quot;%.2f&quot;</span>);</div><div class="line">  dataLogger.<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a88b932da96a87f73a8c63b977df50bd2">addData</a>&lt;<span class="keywordtype">float</span>&gt;(<span class="stringliteral">&quot;IMU Avg Temp (deg C)&quot;</span>,  <span class="keyword">new</span> <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConstRetFunctorC.html">ArConstRetFunctorC&lt;float, ArSeekurIMU&gt;</a>(&amp;imu, &amp;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArSeekurIMU.html#a59d4cb2d757dc9fb90ff0ac0cbb03494">ArSeekurIMU::getTemperature</a>), <span class="stringliteral">&quot;%.2f&quot;</span>);</div><div class="line"></div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#af1d44610d83bc5112040bc7d4c602ba9">Aria::getInfoGroup</a>()-&gt;<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArStringInfoGroup.html#a30fda7f23d53abd265a6e6801b06d4c7">addStringUnsignedLong</a>(<span class="stringliteral">&quot;Log Disk Free Space&quot;</span>, 10, <span class="keyword">new</span> <a name="_a86"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArGlobalRetFunctor.html">ArGlobalRetFunctor&lt;unsigned long&gt;</a>(&amp;ArLog::getAvailableDiskSpaceMB), <span class="stringliteral">&quot;%lu MB&quot;</span>);</div><div class="line"></div><div class="line">  dataLogger.<a name="a87"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArDataLogger.html#a28f4fc3cf8955e837378502de3707fda">addToConfig</a>(<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>());</div><div class="line"></div><div class="line">  </div><div class="line">  <a name="_a88"></a><a class="code" href="classArServerModeTestLoop.html">ArServerModeTestLoop</a> testLoop(&amp;server, &amp;robot, <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>(), &amp;commands);</div><div class="line"></div><div class="line">  </div><div class="line">  <span class="comment">// start the robot running, true means that if we lose connection the run thread stops</span></div><div class="line">  robot.<a name="a89"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html#a3c3d878cfd11a2ef91230005a83bfcaa">runAsync</a>(<span class="keyword">true</span>);</div><div class="line"></div><div class="line"></div><div class="line">  <span class="comment">// connect the laser(s) if it was requested</span></div><div class="line">  <span class="keywordflow">if</span> (!laserConnector.<a name="a90"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLaserConnector.html#ab97ce6a5fedebf44526773bc674b970e">connectLasers</a>())</div><div class="line">  {</div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#a43a8b3789126c818f390f24bdbceccce">ArLog::log</a>(<a name="a91"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3a012daf6573594f91242f8dd7c02eb74b">ArLog::Terse</a>, <span class="stringliteral">&quot;serverDemo: Warning: Could not connect to lasers.  Will continue but without laser sensing!&quot;</span>);</div><div class="line">    <span class="comment">//Aria::exit(2);</span></div><div class="line">  }</div><div class="line">  </div><div class="line"></div><div class="line">  drawings.<a name="a92"></a><a class="code" href="classArServerInfoDrawings.html#afce43fb3fd0324b092600c9eb6fb50a7">addRobotsRangeDevices</a>(&amp;robot);</div><div class="line"></div><div class="line">  <span class="comment">// log whatever we wanted to before the runAsync</span></div><div class="line">  simpleOpener.<a name="a93"></a><a class="code" href="classArServerSimpleOpener.html#ad05fedc301ab89072e61879999463d17">checkAndLog</a>();</div><div class="line"></div><div class="line"></div><div class="line">  <a name="_a94"></a><a class="code" href="classArServerAdvertiser.html">ArServerAdv</a> adv(&amp;server, <span class="stringliteral">&quot;serverDemo&quot;</span>, <span class="stringliteral">&quot;Simple ArNetworking Server Example&quot;</span>);</div><div class="line"></div><div class="line">  <span class="comment">// now let it spin off in its own thread</span></div><div class="line">  server.<a name="a95"></a><a class="code" href="classArServerBase.html#a93c742ddc58a8f035a0d1b9c1fae4599">runAsync</a>();</div><div class="line"></div><div class="line"></div><div class="line">  <span class="comment">// Uncomment code below to add a key handler so that you can exit by pressing</span></div><div class="line">  <span class="comment">// escape. Note that a key handler prevents you from running</span></div><div class="line">  <span class="comment">// a program in the background on Linux, since it expects an </span></div><div class="line">  <span class="comment">// active terminal to read keys from; remove this if you want</span></div><div class="line">  <span class="comment">// to run it in the background.</span></div><div class="line"><span class="comment">/*</span></div><div class="line"><span class="comment">  ArKeyHandler *keyHandler;</span></div><div class="line"><span class="comment">  if ((keyHandler = Aria::getKeyHandler()) == NULL)</span></div><div class="line"><span class="comment">  {</span></div><div class="line"><span class="comment">    keyHandler = new ArKeyHandler;</span></div><div class="line"><span class="comment">    Aria::setKeyHandler(keyHandler);</span></div><div class="line"><span class="comment">    robot.lock();</span></div><div class="line"><span class="comment">    robot.attachKeyHandler(keyHandler);</span></div><div class="line"><span class="comment">    robot.unlock();</span></div><div class="line"><span class="comment">    printf(&quot;To exit, press escape.\n&quot;);</span></div><div class="line"><span class="comment">  }</span></div><div class="line"><span class="comment">*/</span></div><div class="line"></div><div class="line">  <span class="comment">// Read in parameter files.</span></div><div class="line"></div><div class="line">  std::string configFile = <span class="stringliteral">&quot;serverDemoConfig.txt&quot;</span>;</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>()-&gt;<a name="a96"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConfig.html#a5f9d30c8911050b8d510837d27f3e067">setBaseDirectory</a>(<span class="stringliteral">&quot;./&quot;</span>);</div><div class="line"></div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#a43a8b3789126c818f390f24bdbceccce">ArLog::log</a>(<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3a7040faf60eeb155eaa85d439b1066ca1">ArLog::Normal</a>, <span class="stringliteral">&quot;Loading config file %s%s...&quot;</span>, <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>()-&gt;getBaseDirectory(), configFile.c_str());</div><div class="line">  <span class="keywordflow">if</span> (<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>()-&gt;<a name="a97"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConfig.html#a3e14491304e22ded38de8ffcc203035a">parseFile</a>(configFile.c_str(), <span class="keyword">true</span>, <span class="keyword">true</span>))</div><div class="line">  {</div><div class="line">    <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#a43a8b3789126c818f390f24bdbceccce">ArLog::log</a>(<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3a7040faf60eeb155eaa85d439b1066ca1">ArLog::Normal</a>, <span class="stringliteral">&quot;Sucessfully loaded config file %s&quot;</span>, configFile.c_str());</div><div class="line">  }</div><div class="line">  <span class="keywordflow">else</span></div><div class="line">  {</div><div class="line">    <span class="keywordflow">if</span> (<a name="a98"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArUtil.html#a731729868fac7cf87c9894fe024f8a6c">ArUtil::findFile</a>(configFile.c_str()))</div><div class="line">    {</div><div class="line">      <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#a43a8b3789126c818f390f24bdbceccce">ArLog::log</a>(<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3a7040faf60eeb155eaa85d439b1066ca1">ArLog::Normal</a>, </div><div class="line">                 <span class="stringliteral">&quot;Warning: Errors loading or parsing configuration file %s%s, continuing anyway&quot;</span>,</div><div class="line">     <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>()-&gt;getBaseDirectory(),</div><div class="line">                 configFile.c_str());</div><div class="line">    }</div><div class="line">    <span class="keywordflow">else</span></div><div class="line">    {</div><div class="line">      <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#a43a8b3789126c818f390f24bdbceccce">ArLog::log</a>(<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3a7040faf60eeb155eaa85d439b1066ca1">ArLog::Normal</a>, <span class="stringliteral">&quot;No configuration file %s%s, creating.&quot;</span>, <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>()-&gt;getBaseDirectory(), configFile.c_str());</div><div class="line">      <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#ace50b4190f04bcacaf285bb5830c5fc2">Aria::getConfig</a>()-&gt;<a name="a99"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArConfig.html#af3c8626c844828f2ce632cc7027a7a67">writeFile</a>(configFile.c_str());</div><div class="line">    }</div><div class="line">  }</div><div class="line"></div><div class="line"></div><div class="line">  robot.<a name="a100"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html#a5aecc7ac998c9a31b82fdb904efa8609">lock</a>();</div><div class="line">  robot.<a name="a101"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/group__easy.html#gaa3657bebab0086dd14ed0c8c3f76dc8b">enableMotors</a>();</div><div class="line">  robot.<a name="a102"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArRobot.html#a403d9de010dc2b8d478cd0b14b2d9491">unlock</a>();</div><div class="line"></div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#a43a8b3789126c818f390f24bdbceccce">ArLog::log</a>(<a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArLog.html#ac8cc0fb3aa323ab2a1c21340fdd1dce3a7040faf60eeb155eaa85d439b1066ca1">ArLog::Normal</a>, <span class="stringliteral">&quot;serverDemo: Server is now running. Connect to %s with MobileEyes, clientDemo or another client.&quot;</span>, server.<a name="a103"></a><a class="code" href="classArServerBase.html#a901ba41d3054ff06210bb65fc6453cc9">getOpenOnIP</a>()?server.<a class="code" href="classArServerBase.html#a901ba41d3054ff06210bb65fc6453cc9">getOpenOnIP</a>():<span class="stringliteral">&quot;this host&quot;</span>);</div><div class="line"></div><div class="line">  robot.<a name="a104"></a><a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/group__easy.html#ga95201be7c39b521983b51e6f5d9303e4">waitForRunExit</a>();</div><div class="line">  <a class="codeRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classAria.html#a6abc3d39b3e9548063bb8e78375acc17">Aria::exit</a>(0);</div><div class="line">}</div><div class="line"></div><div class="line"></div></div><!-- fragment --> </div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
